/**
 * 验证CRON表达式
 */
export const validateCronExpression = (_rule: any, value: string, callback: Function) => {
  if (!value) {
    callback(new Error('请输入CRON表达式'));
    return;
  }

  const cronRegex = /^(\*|([0-9]|[1-5][0-9])) (\*|([0-9]|[1-5][0-9])) (\*|([0-9]|1[0-9]|2[0-3])) (\*|([1-9]|[12][0-9]|3[01])) (\*|([1-9]|1[012])) (\*|([0-6])|MON|TUE|WED|THU|FRI|SAT|SUN|\?)$/;

  if (!cronRegex.test(value)) {
    callback(new Error('CRON表达式格式不正确'));
    return;
  }

  // 检查日期和星期的互斥性
  const parts = value.split(' ');
  if (parts[3] !== '?' && parts[5] !== '?') {
    callback(new Error('日期和星期必须有一个为?'));
    return;
  }

  callback();
};